package com.itheima.converter;

import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author zhangyan
 * @date 2021/2/5 17:01
 *
 * 我们可以通过自定义类型转换器的方式对日期进行转换。
 * 自定义类型转换器，需要实现接口Converter<S,T> , 其中的泛型S代表 Source源，T代码target目标
 * 实现过程：
 * 定义Converter接口的实现类
 *         编写convert方法，将字符串转换为日期类型
 * 修改spring-MVC.xml
 *         创建类型转换器工厂对象，并加载自定义类型转换器
 *         mvc注解驱动加载类型转换器工厂对象
 */
public class DateStringConverter implements Converter<String,Date> {

    //重写接口的抽象方法，参数由泛型决定
    @Override
    public Date convert(String source) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //类型转换器无法预计使用过程中出现的异常，因此必须在类型转换器内部捕获，不允许抛出，框架无法预计此类异常如何处理
        try {
            Date date = sdf.parse(source);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}